Packetbeatでパケットモニタリング
はじめに
藤本です。
昨日、今日と弊社佐々木がBeats PlatformのTopbeat、Filebeatをご紹介しました。私からはPacketbeatをご紹介します。
環境
私はDocker使い(え)ません!
- OS
- Amazon Linux 2015.09
- ミドルウェア :
- elasticsearch-2.1.0-1.noarch
- kibana-4.3.0
- httpd24-2.4.16-1.62.amzn1.x86_64
- mysql-server-5.5-1.6.amzn1.noarch
やってみた
インストール
パッケージやバイナリは各種ファイル形式(今回はrpmファイル)でelasitc社のページからダウンロードできます。
$ sudo rpm -ivh https://download.elastic.co/beats/packetbeat/packetbeat-1.0.0-x86_64.rpm Retrieving https://download.elastic.co/beats/packetbeat/packetbeat-1.0.0-x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:packetbeat-1.0.0-1 ################################# [100%] $ rpm -ql packetbeat /etc/init.d/packetbeat /etc/packetbeat/packetbeat.template.json /etc/packetbeat/packetbeat.yml /usr/bin/packetbeat /usr/bin/packetbeat-god
パッケージの中身はこれだけです。
インデックステンプレート作成
パッケージに内包されているJSONファイルを使ってインデックステンプレートを作成します。
$ curl -XPUT localhost:9200/_template/packetbeat -d @/etc/packetbeat/packetbeat.template.json {"acknowledged":true} $ curl "localhost:9200/_template/packetbeat?pretty" { "packetbeat" : { "order" : 0, "template" : "packetbeat-*", "settings" : { "index" : { "refresh_interval" : "5s" } }, "mappings" : { "_default_" : { "dynamic_templates" : [ { "template1" : { "mapping" : { "index" : "not_analyzed", "ignore_above" : 1024, "doc_values" : true, "type" : "{dynamic_type}" }, "match" : "*" } } ], "properties" : { "response" : { "index" : "analyzed", "norms" : { "enabled" : false }, "type" : "string" }, "client_location" : { "type" : "geo_point" }, "@timestamp" : { "type" : "date" }, "query" : { "index" : "not_analyzed", "doc_values" : true, "type" : "string" }, "request" : { "index" : "analyzed", "norms" : { "enabled" : false }, "type" : "string" }, "params" : { "index" : "analyzed", "norms" : { "enabled" : false }, "type" : "string" } }, "_all" : { "enabled" : true, "norms" : { "enabled" : false } } } }, "aliases" : { } } }
ダッシュボード生成
Topbeatでも紹介しましたが、elasticはTopbeat、Packetbeat用のダッシュボードを用意しています。
$ git clone https://github.com/elastic/beats-dashboards.git Cloning into 'beats-dashboards'... remote: Counting objects: 929, done. remote: Compressing objects: 100% (40/40), done. remote: Total 929 (delta 24), reused 0 (delta 0), pack-reused 889 Receiving objects: 100% (929/929), 2.31 MiB | 1.10 MiB/s, done. Resolving deltas: 100% (662/662), done. Checking connectivity... done. $ cd beats-dashboards/ $ ./load.sh -url localhost:9200 Loading dashboards to localhost:9200 in .kibana using curl: Loading search Cache-transactions: (中略) Loading index pattern topbeat-*: {"_index":".kibana","_type":"index-pattern","_id":"topbeat-*","_version":1,"_shards":{"total":2,"successful":1,"failed":0},"created":true}
ダッシュボードの登録が完了しました。
httpdのデータ取得
まずはWEBアクセスし、データを収集します。
Kibanaへアクセスします。
Discoverを見てみます。データが収集できていますね。
どのようなデータが取れているのでしょうか。
接続元IPアドレス、転送Byte数、HTTPステータスコード、レスポンスタイム、パス、ポート番号などなどなど。スゴイ!!こんなにたくさんの情報がこんなに簡単に取れました!
次はDashboardを見てみます。
ロードすると、いくつかの既に用意されています。
今回はHTTPを選択します。
これ見てるだけで仕事した気になりそう。
MySQLのデータ取得
まずはSQLを流して、データを収集します。
Kibanaへアクセスします。 まずはDiscover。データを収集できています。
データの内容はどうでしょう。
接続元IPアドレス、転送Byte数、出力行数・列数、レスポンスタイム、SQLなどなどなど。
次はDashboardを見てみます。
今回はMySQL Performanceを選択します。
まとめ
いかがでしたでしょうか?
これで現在リリースされている3つのofficially supported Beatsを一通りご紹介しました。次回はFilebeat + Logstashによるログの可視化、そもそもBeats Platformとは、といったところをご紹介できれば、と思います。